/*
 * Copyright © 2021 尛飛俠（Denvie） All rights reserved.
 */

package cn.denvie.springboot.mbp.base;

import cn.denvie.springboot.mbp.config.MyMetaObjectHandler;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.Date;

/**
 * 实体类基类。<br/>
 * 根据阿里开发规范要求，每张数据库表必备三字段：id, gmt_create, gmt_modified。
 *
 * @author Denvie
 * @date 2021/12/18
 * @since 1.0.0
 */
@Getter
@Setter
public abstract class BaseEntity implements Serializable {
    /**
     * 主键ID，雪花算法自动生成
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    protected Long id;

    /**
     * 创建时间。使用 @TableField 指定在插入数据时自动填充日期值，参考 {@link MyMetaObjectHandler}。
     */
    @TableField(value = "gmt_create", fill = FieldFill.INSERT)
    protected Date gmtCreate;

    /**
     * 修改时间。使用 @TableField 指定在更新数据时自动填充日期值，参考 {@link MyMetaObjectHandler}。
     */
    @TableField(value = "gmt_modified", fill = FieldFill.UPDATE)
    protected Date gmtModified;

    ///////////////////////////////////////////////////////////////////////////
    // 扩展字段
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 逻辑删除字段
     */
    @TableField(value = "is_deleted")
    @TableLogic(value = "0", delval = "1")
    protected Integer isDeleted;
}
